# Lambdas.java

    package org.codefilarete.tool;

    import java.util.function.Function;

    /**
     * @author Guillaume Mary
     */
    public class Lambdas {

    	/**
    	 * Run some code before another
    	 * @param delegate the code to execute
    	 * @param runnable the code to be executed before
    	 * @param <I> input parameter type
    	 * @param <O> ouput parameter type
    	 * @return the result of delegate.apply()
    	 */
    	public static <I, O> Function<I, O> before(Function<I, O> delegate, Runnable runnable) {
    		return i -> {
    			runnable.run();
    			return delegate.apply(i);
    		};
    	}
    }